c++ - Qt Release build 给出 MSVC++ Runtime Library Error
全部标签 我有静态C++库,用MSVC和dll文件编译(称为opennurbs的库)。我需要在项目中使用这个库,由mingw编译(我使用Qtcreator,但项目不使用qt库)。所以,我有Unresolvedexternal问题。我认为名称修改有问题。如何将.lib文件转换为.a库?我尝试使用nm命令,但它不起作用:“foo.dll中没有符号”。Extern"C"不起作用,因为它是C++库。 最佳答案 一般来说,您不能从用另一个编译器构建的程序中使用用一个编译器构建的C++DLL。名称重整只是问题之一-没有对异常处理、RTTI、内存管理甚至类
#includestructT{explicitoperatorbool(){returntrue;}};intmain(){Tt;if(t){}//OKautol=[&](){if(t){}//Error};}MSVC的行为在这里似乎奇怪地不一致;OK行和Error行之间的唯一区别是它们在lambda中。这是错误吗? 最佳答案 Isthisabug?是的,绝对是。您的程序没有任何问题,bool转换运算符在两种情况下都应被调用。 关于c++-未在lambda内部调用显式运算符bool—M
我在VS2013中遇到了编译器错误,我的自定义类存在歧义错误,但它可以正常工作std::vector#include#includeusingnamespacestd;classMyArray{public:std::vectorvalues;MyArray(ints):values(s){}MyArray(std::initializer_listlist){values=list;}};intmain(){vectorvx({9,8,7});//WorksMyArraymx({9,8,7});//Worksvectorvy({9});//WorksMyArraymy({9});//
我读到数组大小需要在编译时知道。但是,当我这样做时,它编译并运行得很好,没有出现任何错误……这是怎么回事?#includeintmain(){intsize;std::cout>size;inta[size];return0;} 最佳答案 您没有将其编译为严格符合C++,而是usinganextensionborrowedfromC99.使用-Wall-Wextra-pedantic-std=c++14让编译器报错。请记住,符合标准的编译器只需要在遇到标准认为格式错误的构造时输出单个诊断。
我正在使用C++库。该库的最低要求是C++03。我在VisualStudio2015下发现了一些关于抛出析构函数的警告:...algparam.h(271):warningC4297:'AlgorithmParametersBase::~AlgorithmParametersBase':functionassumednottothrowanexceptionbutdoes...algparam.h(271):note:destructorordeallocatorhasa(possiblyimplicit)non-throwingexceptionspecificationthrow是
我试图让SDL与我的MVS2015一起工作,但到目前为止没有成功,我真的想让它工作,所以我将解释我所做的每一步。首先,我从SDL安装指南下载了预构建SDL2库:https://wiki.libsdl.org/Installation,然后解压。在MVS2015中创建一个新的控制台应用程序,打开项目属性页面并正确设置“包含目录”,我检查了三次,也为“库目录”做了这个。然后我转到“链接器”->“输入”并将SDL2.lib添加到“附加依赖项”。到目前为止一切顺利,我的代码现在应该可以与SDL一起使用了吧?我做了一个简短的主要测试它是否有效:#includeintmain(){SDL_Init
为什么这个非常简单的代码会出错:#includeusingnamespacestd::string_literals;intmain(){autos="cat"s;}给出这个错误:hello.cpp:4:16:error:expected';'atendofdeclarationautos="cat"s;这个编译器是特定的,因为我正在阅读官方资源,如:https://msdn.microsoft.com/en-us/library/69ze775t.aspx.我的机器运行osx我使用终端和g++编译:g++-v吐出:Configuredwith:--prefix=/Library/De
代码如下:#include#include#includeclassParent{public:virtualvoidwhatAmI(){std::coutvalue=10;sc.parent->whatAmI();std::coutvaluegetValue()它返回:Achild10valuefromChild0我已经阅读了有关对象切片的内容,并确保在child被切片后我会分配值10。我仍然不明白为什么直接字段访问和函数调用会给出不同的结果。谢谢。 最佳答案 这里没有切片-您正在通过指针访问。该行为是由于成员变量访问是不是多态的
我想在游戏中实现一个物理引擎,以便计算物体在受力时的轨迹。该引擎将根据对象的先前状态计算对象的每个状态。当然,这意味着要在两个时间单位之间进行大量计算才能足够精确。为了正确地做到这一点,我首先想知道这种获取位置的方法与运动学方程之间的差异有多大。所以我编写了这段代码,用于存储文件中模拟和方程给出的位置(x,y,z)。#include#include#include#include"header.h"BodynouveauCorps(Bodybody,Vector3force,doubledeltaT){doublem=body.mass;doublet=deltaT;//Newton'
最近我遇到了thequestion讨论了is_streamable类型特征。所以我决定实现我自己的版本并提出下一个解决方案来检查是否可以从std::istream读取类型:templatestructis_readable_from_stream_impl:std::false_type{};templatestructis_readable_from_stream_impl()>>std::declval())>>:std::true_type{};templatestructis_readable_from_stream:is_readable_from_stream_impl{}